package com.java.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/*
 * MD5 算法
*/
public class MD5 {

    // 全局数组
    private final static String[] strDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d",
	    "e", "f" };

    public MD5() {

    }

    // 返回形式为数字跟字符串
    private static String byteToArrayString(byte bByte) {
	int iRet = bByte;
	if (iRet < 0) {
	    iRet += 256;
	}
	int iD1 = iRet / 16;
	int iD2 = iRet % 16;
	return strDigits[iD1] + strDigits[iD2];
    }

    // 转换字节数组为16进制字串
    private static String byteToString(byte[] bByte) {
	StringBuffer sBuffer = new StringBuffer();
	for (int i = 0; i < bByte.length; i++) {
	    sBuffer.append(byteToArrayString(bByte[i]));
	}
	return sBuffer.toString();
    }

    /**
     * 
     * MD5加密 密码加密使用
     * 
     * @param strObj
     * @return
     * @see [类、类#方法、类#成员]
     */
    public static String GetMD5Code(String strObj) {
	String resultString = null;
	try {
	    resultString = new String(strObj);
	    MessageDigest md = MessageDigest.getInstance("MD5");
	    resultString = byteToString(md.digest(strObj.getBytes()));
	} catch (NoSuchAlgorithmException ex) {
	    ex.printStackTrace();
	}
	return resultString;
    }

    public static void main(String[] args) {
	System.out.println(MD5.GetMD5Code("123456"));
    }
}